import os
import hashlib


def calculate_file_hash(file_path):
    """计算文件的哈希值"""
    hash_md5 = hashlib.md5()
    with open(file_path, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()


def generate_random_binary_file(file_path, size_in_bytes):
    """
    生成一个指定大小的随机二进制文件。

    :param file_path: 生成的文件路径
    :param size_in_bytes: 文件大小（字节）
    """
    with open(file_path, 'wb') as f:
        # 生成随机字节并写入文件
        f.write(os.urandom(size_in_bytes))


# 示例：生成一个1MB的随机二进制文件
file_size_in_mb = eval(input("输入要文件的大小（MB）： "))
file_name = f'random_binary_file_{file_size_in_mb}MB.bin'
file_path = os.path.join('E:\\project\\python\\DataStream\\Upload\\client_files', file_name)
size_in_bytes = int(file_size_in_mb * 1024 * 1024)  # 1MB
generate_random_binary_file(file_path, size_in_bytes)

print(f"随机二进制文件已生成：{file_path}  Hash: {calculate_file_hash(file_path)}")

